.. _cmlSxGetCorrection:

cmlSxGetCorrection
================================
--------------------------------


SYNOPSYS
`````````````
.. code-block:: none

  VT_I4 cmlSxGetCorrection([in] VT_I4 BoardID, [in] VT_I4 Axis, [in] VT_I4 CorrMode, 
  [in] VT_R8 CorrAmount, [in] VT_R8 CorrVel, [in] VT_I4 CntrMask) 

DESCRIPTION
`````````````  

- cmlSxGetCorrection() 함수는 백래쉬/슬립 보정에 대한 현재 설정값을 읽어들이는 함수입니다. 

\

- 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의
  첨두어 cml 가 붙지 않습니다.

PARAMETER
`````````````

▶ BoardID: 사용자가 설정한 디바이스(보드) ID. 
 
▶ Axis: 사용자가 제어하고자 하는 축 번호. 
 
▶ CorrMode : cmlSxGetCorrection함수의 인자이며, 반환값은 다음과 같습니다. 

  .. csv-table::
   :widths: 10 90
   :header-rows: 1
   :stub-columns: 0

    BIT No., Meaning
    0 (cmlCORR_DISABLE), 보정기능을 비활성화합니다.
    1 (cmlCORR_BACKLASH), 보정모드를 백래쉬 보정모드로 동작중입니다.
    2 (cmlCORR_SLIP), 보정모드를 슬립 보정모드로 동작중입니다.

▶ CorrAmount : cmlSxGetCorrection 함수의 인자이며, 보정 펄스의 수를 반환합니다. 

▶ CorrVel : cmlSxGetCorrection 함수의 인자이며, 보정펄스의 주파수를 반환합니다. 

▶ CntrMask : cmlSxGetCorrection 함수의 인자이며, 보정펄스가 출력되는 동안에 각 카운터의 
동작여부를 비트별로 반환합니다. 각 비트가 나타내는 값은 아래 표를 참고 하십시오. 

.. csv-table::
  :widths: 10 90
  :header-rows: 1
  :stub-columns: 0

  Value, Meaning
  BIT0, 1: 보정펄스 출력시에 Command Counter 가 동작하는 모드입니다.
  BIT1, 1 : 보정펄스 출력시에 Feedback Counter가 동작하는 모드입니다. 



RETURN VALUE
`````````````

+------------+-----------+
|    Value   | Meaning   |
+============+===========+
|    음수    | 수행 실패 |
+------------+-----------+
| ERR_NONE   | 수행 성공 |
+------------+-----------+

EXAMPLE
`````````

.. code-block:: c++
 :linenos:
 :emphasize-lines: 5

  C/C++  
  long BoardID = 0; 
  다음의 예제는 백래쉬 보정을 적용할 때의 동작에 대한 설명입니다. 본 예에서는 “Unit 
  distance”와 “Unit speed”가 각각 1로 설정되었음을 가정합니다. 
  // 백래쉬보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) // 
  cmlSxGetCorrection (BoardID, 0, cmlORR_BACK, 1000, 1000, 0x0); 
  //////////////////////////////////////////////////////////////// 
  // 이전에 (-)방향 이동을 수행하였다면 아래에서 백래쉬 보정을 수행합니다.  
  // 1000 PPS의 속도로 (+)1000펄스를 출력한 후에 지정한 SxMove()가 수행됩니다. 
  cmlSxMove(BoardID, 0, 10000); 
  // 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.  
  cmlSxMove(BoardID, 0, 10000); 
  // 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.  
  cmlSxMove(BoardID, 0, 10000); 
  //////////////////////////////////////////////////////////////// 
  // 이동방향이 전환되므로 아래에서 백래쉬 보정을 수행합니다. 1000 PPS의 속도로 (
  )1000 펄스를 출력한 
  // 후에 지정한 SxMove()가 수행됩니다. 
  cmlSxMove(BoardID, 0, -10000); 
  // 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.  
  cmlSxMove(BoardID, 0, -10000); 

.. code-block:: c++
 :linenos:

  Visual Basic 
  '다음의 예제는 백래쉬 보정을 적용할 때의 동작에 대한 설명입니다. 
  '본 예에서는 "Unit distance"와 "Unit speed"가 각각 1로 설정되었음을 가정합니다. 
  „BoardID 는 0으로 가정합니다. 
  '// 백래쉬보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS)  
  Call SxSetCorrection(BoardID, 0, cmlCORR_BACK, 1000, 1000, 0) 
  '/////////////////////////////////////////////////////////////// 
  '// 이전에 (-)방향 이동을 수행하였다면 아래에서 백래쉬 보정을 수행합니다. 
  '// 1000 PPS의 속도로 (+)1000펄스를 출력한 후에 지정한 SxMove()가  
  ‘// 수행됩니다. 
  Call SxMove(BoardID, 0, 10000)
  '// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.  
  Call SxMove(BoardID, 0, 10000) 
  '// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.  
  Call SxMove(BoardID, 0, 10000) 
  '/////////////////////////////////////////////////////////////// 
  '// 이동방향이 전환되므로 아래에서 백래쉬 보정을 수행합니다. 1000 PPS의 
  '속도로(-)1000펄스를 출력한 후에 지정한 SxMove()가 수행됩니다. 
  Call SxMove(BoardID, 0, -10000) 
  '// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.  
  Call SxMove(BoardID, 0, -10000) 

EXAMPLE2
```````````

- 다음의 예제는 슬립보정을 적용할 때의 동작에 대한 설명입니다. 본 예에서는 “Unit 
  distance”와 “Unit speed”가 각각 1 로 설정되었음을 가정합니다.

.. code-block:: c++
 :linenos:

  C/C++  
  //BoardID는 0으로 가정합니다. 
  // 슬립보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) // 
  // (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다  
  cmlSxMove(BoardID, 0, 10000); 
  // (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  cmlSxMove(BoardID, 0, 10000); 
  // (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  cmlSxMove(BoardID, 0, -10000); 
  // (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  cmlSxMove(BoardID, 0, -10000); 

.. code-block:: c++
 :linenos:

  Visual Basic 

  „BoardID 는 0으로 가정합니다. 
  '// 슬립보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) 
  Call cmlSxGetCorrection(BoardID, 0, cmlORR_SLIP, 1000, 1000, 0) 
  '// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  Call cmlSxMove(BoardID, 0, 10000) 
  '// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  Call cmlSxMove(BoardID, 0, 10000) 
  '// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  Call cmlSxMove(BoardID, 0, -10000) 
  '// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 
  Call cmlSxMove(BoardID, 0, -10000)